// 引入工具类
const { articleApi, homeApi } = require('../../utils/api')
const { formatTime } = require('../../utils/dateUtils')
const { newsStore } = require('../../utils/store')
const { processApiImageUrl, extractImageFromHtml } = require('../../utils/imageUtils')

Page({
  data: {
    // 轮播图数据
    slides: [],
    currentSlideIndex: 0,
    swiperAutoplay: true, // 控制轮播图自动播放
    swiperInterval: 3000, // 轮播间隔时间

    // 快捷导航数据 - 使用正确的微信小程序图片路径
    quickNavItems: [
      { id: 1, title: '学校简介', icon: '/images/icons/college.png', action: 'search' },
      { id: 2, title: '学校荣誉', icon: '/images/icons/honor.png', action: 'search' },
      { id: 3, title: '学校组织', icon: '/images/icons/organization.png', action: 'search' },
      { id: 4, title: '教务中心', icon: '/images/icons/teaching.png', action: 'education' },
      { id: 5, title: '更多详情', icon: '/images/icons/more.png', action: 'search' },
      { id: 6, title: '党群组织', icon: '/images/icons/party.png', action: 'search' }
    ],

    // 新闻数据
    hotNews: [],
    loading: false
  },

  onLoad() {
    console.log('首页加载')
    this.fetchHomeSlides()
    this.fetchHotNews()
  },

  onShow() {
    console.log('首页显示')
  },

  // 获取轮播图数据
  async fetchHomeSlides() {
    try {
      const response = await homeApi.getHomeSlides()
      console.log('轮播图API响应:', response)

      // 确保response是数组，如果不是则使用空数组
      const slidesData = Array.isArray(response) ? response : []

      const slides = slidesData.map(slide => ({
        id: slide.id,
        title: slide.title,
        description: slide.description,
        // 使用图片处理工具标准化路径
        image: processApiImageUrl(slide.image_url)
      }))

      this.setData({ slides })
      console.log('处理后的轮播图数据:', slides)
    } catch (error) {
      console.error('获取轮播图数据失败:', error)
      // 使用默认轮播图数据 - 使用正确的微信小程序图片路径
      const defaultSlides = [
        {
          id: 1,
          title: '轮播图1',
          image: '/images/HomeSlide/Slide1.jpg'
        },
        {
          id: 2,
          title: '轮播图2',
          image: '/images/HomeSlide/Slide2.jpg'
        },
        {
          id: 3,
          title: '轮播图3',
          image: '/images/HomeSlide/Slide3.jpg'
        },
        {
          id: 4,
          title: '轮播图4',
          image: '/images/HomeSlide/Slide4.jpg'
        }
      ]
      this.setData({ slides: defaultSlides })
    }
  },

  // 获取热门新闻 - 与mobile-vant保持一致的逻辑
  async fetchHotNews() {
    this.setData({ loading: true })

    try {
      const result = await articleApi.getArticleList({ limit: 6, page: 1 })
      console.log('新闻列表API响应:', result)

      let articles = []

      // 处理不同的响应格式，与mobile-vant保持一致
      if (result && result.code === 200 && result.data) {
        if (Array.isArray(result.data)) {
          articles = result.data
        } else if (result.data.list && Array.isArray(result.data.list)) {
          articles = result.data.list
        } else if (result.data.records && Array.isArray(result.data.records)) {
          articles = result.data.records
        }
      } else if (Array.isArray(result)) {
        articles = result
      } else if (result && result.list && Array.isArray(result.list)) {
        articles = result.list
      } else if (result && result.data && Array.isArray(result.data.records)) {
        articles = result.data.records
      }

      console.log('解析后的文章数据:', articles)

      if (Array.isArray(articles) && articles.length > 0) {
        const hotNews = articles.slice(0, 6).map(item => {
          const newsItem = {
            newsId: item.news_id || item.newsId || item.id,
            id: item.news_id || item.newsId || item.id,
            title: item.title || '无标题',
            contentPreview: this.generateSummary(item.content_text || item.contentText || ''),
            contentText: item.content_text || item.contentText || '',
            category: item.category || '校园新闻',
            section: item.section || '',
            pubTime: item.pub_time || item.pubTime,
            formattedTime: formatTime(item.pub_time || item.pubTime),
            image: this.extractImage(item.content_html || item.contentHtml || ''),
            imageUrl: this.extractImage(item.content_html || item.contentHtml || '')
          }
          console.log('处理后的新闻项:', newsItem)
          return newsItem
        })

        console.log('最终处理的热门新闻:', hotNews)
        this.setData({
          hotNews,
          loading: false
        })

        // 保存到全局状态
        newsStore.addNewsToList(hotNews)
      } else {
        console.warn('未找到有效的新闻数据')
        this.setData({
          hotNews: [],
          loading: false
        })
      }

    } catch (error) {
      console.error('获取热门新闻失败:', error)
      this.setData({ loading: false })
      wx.showToast({
        title: '获取新闻失败',
        icon: 'error'
      })
    }
  },

  // 生成摘要
  generateSummary(content) {
    if (!content) return '无内容摘要'
    // 移除HTML标签
    const text = content.replace(/<[^>]*>/g, '')
    return text.length > 60 ? text.substring(0, 60) + '...' : text
  },

  // 提取图片
  extractImage(htmlContent) {
    return extractImageFromHtml(htmlContent)
  },

  // 轮播图切换事件
  onSlideChange(event) {
    this.setData({
      currentSlideIndex: event.detail.current
    })
    // console.log('轮播图切换到:', event.detail.current)
  },

  // 轮播图过渡动画事件
  onSlideTransition(event) {
    // 可以在这里添加过渡动画的处理逻辑
    // console.log('轮播图过渡动画:', event.detail)
  },

  // 轮播图动画结束事件
  onSlideAnimationFinish(event) {
    // 可以在这里添加动画结束后的处理逻辑
    // console.log('轮播图动画结束:', event.detail)
  },

  // 图片加载成功事件
  onImageLoad() {
    console.log('轮播图片加载成功')
  },

  // 图片加载失败事件
  onImageError(event) {
    console.error('轮播图片加载失败:', event.detail)
    // 可以在这里设置默认图片或显示错误提示
  },

  // 处理快捷导航点击
  handleQuickNav(event) {
    const item = event.currentTarget.dataset.item
    console.log('点击快捷导航:', item)

    switch (item.action) {
      case 'education':
        wx.navigateTo({
          url: '/pages/education/education'
        })
        break
      case 'search':
        wx.navigateTo({
          url: '/pages/search/search'
        })
        break
      default:
        wx.showToast({
          title: `点击了${item.title}`,
          icon: 'none'
        })
    }
  },

  // 跳转到新闻列表
  goToNews() {
    wx.navigateTo({
      url: '/pages/news/list'
    })
  },

  // 跳转到新闻详情
  goToDetail(event) {
    try {
      const newsId = event.currentTarget.dataset.newsId
      console.log('跳转新闻详情:', newsId)

      if (!newsId) {
        wx.showToast({
          title: '文章ID无效',
          icon: 'error'
        })
        return
      }

      // 添加到历史记录
      const newsItem = this.data.hotNews.find(item =>
        (item.newsId || item.id) == newsId
      )

      if (newsItem) {
        const app = getApp()
        app.addHistory(newsItem)
      }

      wx.navigateTo({
        url: `/pages/news/detail/detail?id=${newsId}`
      })

    } catch (error) {
      console.error('跳转新闻详情失败:', error)
      wx.showToast({
        title: '跳转失败',
        icon: 'error'
      })
    }
  }
})
